home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / python-support / gnome-orca / orca / settings.py < prev    next >
Encoding:
Python Source  |  2009-04-13  |  39.0 KB  |  1,227 lines

  1. # Orca
  2. #
  3. # Copyright 2004-2008 Sun Microsystems Inc.
  4. #
  5. # This library is free software; you can redistribute it and/or
  6. # modify it under the terms of the GNU Library General Public
  7. # License as published by the Free Software Foundation; either
  8. # version 2 of the License, or (at your option) any later version.
  9. #
  10. # This library is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13. # Library General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU Library General Public
  16. # License along with this library; if not, write to the
  17. # Free Software Foundation, Inc., Franklin Street, Fifth Floor,
  18. # Boston MA  02110-1301 USA.
  19.  
  20. """Manages the settings for Orca.  This will defer to user settings first, but
  21. fallback to local settings if the user settings doesn't exist (e.g., in the
  22. case of gdm) or doesn't have the specified attribute."""
  23.  
  24. __id__        = "$Id: settings.py 4674 2009-04-10 13:39:24Z wwalker $"
  25. __version__   = "$Revision: 4674 $"
  26. __date__      = "$Date: 2009-04-10 09:39:24 -0400 (Fri, 10 Apr 2009) $"
  27. __copyright__ = "Copyright (c) 2004-2008 Sun Microsystems Inc."
  28. __license__   = "LGPL"
  29.  
  30. import os
  31. import re
  32.  
  33. screenWidth = 640
  34. screenHeight = 480
  35. tty = 7
  36.  
  37. # Whether tool tips can be presented.
  38. #
  39. canPresentToolTips = False
  40.  
  41. try:
  42.     # This can fail due to gtk not being available.  We want to
  43.     # be able to recover from that if possible.  The main driver
  44.     # for this is to allow "orca --text-setup" to work even if
  45.     # the desktop is not running.
  46.     #
  47.     import gtk.gdk
  48.     _display = gtk.gdk.display_get_default()
  49.     _screen = _display.get_default_screen()
  50.     _root_window = _screen.get_root_window()
  51.  
  52.     # These are used for placing the magnifier zoomer.
  53.     #
  54.     screenWidth = _screen.get_width()
  55.     screenHeight = _screen.get_height()
  56.  
  57.     # We want to know what the tty is so we can send it to BrlAPI
  58.     # if possible.
  59.     #
  60.     (atom, format, data) = _root_window.property_get("XFree86_VT")
  61.     tty = data[0]
  62.  
  63.     # The bug that caused gnome-panel to crash is fixed in GTK 2.10.11.
  64.     minimum_gtk_version = (100000 * 2) + \
  65.                           (1000 * 10) + \
  66.                            11
  67.     current_gtk_version  = (100000 * gtk.gtk_version[0]) + \
  68.                            (1000 * gtk.gtk_version[1]) + \
  69.                             gtk.gtk_version[2]
  70.     canPresentToolTips = (current_gtk_version >= minimum_gtk_version)
  71. except:
  72.     pass
  73.  
  74. try:
  75.     import gconf
  76.     gconfClient = gconf.client_get_default()
  77. except:
  78.     gconfClient = None
  79.  
  80. import pyatspi
  81.  
  82. import debug
  83. from acss import ACSS
  84. from orca_i18n import _           # for gettext support
  85. from orca_i18n import C_          # to provide qualified translatable strings
  86.  
  87. # These are the settings that Orca supports the user customizing.
  88. #
  89. userCustomizableSettings = [
  90.     "orcaModifierKeys",
  91.     "enableSpeech",
  92.     "speechServerFactory",
  93.     "speechServerInfo",
  94.     "voices",
  95.     "speechVerbosityLevel",
  96.     "readTableCellRow",
  97.     "enableSpeechIndentation",
  98.     "enableEchoByWord",
  99.     "enableEchoBySentence",
  100.     "enableKeyEcho",
  101.     "enablePrintableKeys",
  102.     "enableModifierKeys",
  103.     "enableLockingKeys",
  104.     "enableFunctionKeys",
  105.     "enableActionKeys",
  106.     "enableNavigationKeys",
  107.     "enableTutorialMessages",
  108.     "enableMnemonicSpeaking",
  109.     "enableBraille",
  110.     "enableBrailleContext",
  111.     "enableBrailleGrouping",
  112.     "disableBrailleEOL",
  113.     "brailleEOLIndicator",
  114.     "brailleVerbosityLevel",
  115.     "brailleRolenameStyle",
  116.     "brailleSelectorIndicator",
  117.     "brailleLinkIndicator",
  118.     "enableBrailleMonitor",
  119.     "enableMagnifier",
  120.     "enableMagLiveUpdating",
  121.     "enableMagCursor",
  122.     "enableMagCursorExplicitSize",
  123.     "magHideCursor",
  124.     "magCursorSize",
  125.     "magCursorColor",
  126.     "enableMagCrossHair",
  127.     "enableMagCrossHairClip",
  128.     "magCrossHairSize",
  129.     "magCrossHairColor",
  130.     "magZoomerType",
  131.     "magZoomerLeft",
  132.     "magZoomerRight",
  133.     "magZoomerTop",
  134.     "magZoomerBottom",
  135.     "magZoomFactor",
  136.     "enableMagZoomerBorder",
  137.     "magZoomerBorderSize",
  138.     "magZoomerBorderColor",
  139.     "enableMagZoomerColorInversion",
  140.     "magBrightnessLevel",
  141.     "magBrightnessLevelRed",
  142.     "magBrightnessLevelBlue",
  143.     "magBrightnessLevelGreen",
  144.     "magContrastLevel",
  145.     "magContrastLevelRed",
  146.     "magContrastLevelGreen",
  147.     "magContrastLevelBlue",
  148.     "magSmoothingMode",
  149.     "magMouseTrackingMode",
  150.     "magControlTrackingMode",
  151.     "magTextTrackingMode",
  152.     "magEdgeMargin",
  153.     "magPointerFollowsFocus",
  154.     "magPointerFollowsZoomer",
  155.     "magColorFilteringMode",
  156.     "magSourceDisplay",
  157.     "magTargetDisplay",
  158.     "verbalizePunctuationStyle",
  159.     "showMainWindow",
  160.     "quitOrcaNoConfirmation",
  161.     "presentToolTips",
  162.     "sayAllStyle",
  163.     "keyboardLayout",
  164.     "speakBlankLines",
  165.     "speakMultiCaseStringsAsWords",
  166.     "enabledSpokenTextAttributes",
  167.     "enabledBrailledTextAttributes",
  168.     "textAttributesBrailleIndicator",
  169.     "enableProgressBarUpdates",
  170.     "progressBarUpdateInterval",
  171.     "enableContractedBraille",
  172.     "brailleContractionTable",
  173.     "enableMouseReview",
  174.     "mouseDwellDelay",
  175.     "speakCellCoordinates",
  176.     "speakCellSpan",
  177.     "speakCellHeaders",
  178.     "skipBlankCells",
  179.     "largeObjectTextLength",
  180.     "wrappedStructuralNavigation",
  181.     "presentRequiredState",
  182.     "brailleRequiredStateString",
  183.     "speechRequiredStateString"
  184. ]
  185.  
  186. # The name of the module that hold the user interface for the main window
  187. # for Orca. This module is expected to have two methods, showMainUI and
  188. # hideMainUI, which will show and hide the main window GUI.
  189. #
  190. mainWindowModule = "orca_gui_main"
  191.  
  192. # The name of the modules that hold the user interface for setting
  193. # Orca preferences.  Each module is expected to have the method,
  194. # showPreferencesUI, which will prompt the user for preferences.
  195. #
  196. guiPreferencesModule     = "orca_gui_prefs"
  197. consolePreferencesModule = "orca_console_prefs"
  198. appGuiPreferencesModule  = "app_gui_prefs"
  199.  
  200. # The name of the module that hold the user interface for quitting Orca.
  201. # This module is expected to have the method, showQuitUI, which will
  202. # display the quit GUI.
  203. #
  204. quitModule = "orca_quit"
  205.  
  206. # The name of the module that holds the user interface for performing a
  207. # flat review find.
  208. #
  209. findModule = "orca_gui_find"
  210.  
  211. # A list of keys that can serve as the Orca modifier key.  The list is
  212. # so we can provide better cross platform support (e.g., Sun keyboard
  213. # vs. PC-104 keyboard layouts).  When any of these keys is pressed,
  214. # the orca.MODIFIER_ORCA bit will be set in the 'modifiers' field of
  215. # a KeyboardEvent input event.  The keys are currently compared to the
  216. # event_string of a keyboard input event from AT-SPI.
  217. #
  218. # The initial set of modifier keys is dependant upon whether the user
  219. # has specified a desktop or a laptop keyboard layout.
  220. #
  221. DESKTOP_MODIFIER_KEYS = ["Insert", "KP_Insert"]
  222. LAPTOP_MODIFIER_KEYS  = ["Caps_Lock"]
  223. orcaModifierKeys      = DESKTOP_MODIFIER_KEYS
  224.  
  225. # A new modifier to use (set by the press of any key in the
  226. # orcaModifierKeys list) to represent the Orca modifier.
  227. #
  228. MODIFIER_ORCA = 8
  229.  
  230. # Verbosity levels (see setBrailleVerbosityLevel and
  231. # setSpeechVerbosityLevel).  These will have an impact on the various
  232. # individual verbosity levels for rolenames, accelerators, etc.
  233. #
  234. VERBOSITY_LEVEL_BRIEF   = 0
  235. VERBOSITY_LEVEL_VERBOSE = 1
  236. speechVerbosityLevel    = VERBOSITY_LEVEL_VERBOSE
  237. brailleVerbosityLevel   = VERBOSITY_LEVEL_VERBOSE
  238.  
  239. BRAILLE_ROLENAME_STYLE_SHORT = 0 # three letter abbreviations
  240. BRAILLE_ROLENAME_STYLE_LONG  = 1 # full rolename
  241. brailleRolenameStyle    = BRAILLE_ROLENAME_STYLE_LONG
  242.  
  243. # Braille Selection Indicator (see brailleSelectorIndicator).
  244. # The values represent the character to be used in the attrOr
  245. # field of brlAPI's writeStruct.
  246. #
  247. BRAILLE_SEL_NONE = 0x00 # 00000000
  248. BRAILLE_SEL_7    = 0x40 # 01000000
  249. BRAILLE_SEL_8    = 0x80 # 10000000
  250. BRAILLE_SEL_BOTH = 0xc0 # 11000000
  251. brailleSelectorIndicator = BRAILLE_SEL_BOTH
  252.  
  253. # Braille Link Indicator (see brailleLinkIndicator).
  254. # The values represent the character to be used in the attrOr
  255. # field of brlAPI's writeStruct.
  256. #
  257. BRAILLE_LINK_NONE = 0x00 # 00000000
  258. BRAILLE_LINK_7    = 0x40 # 01000000
  259. BRAILLE_LINK_8    = 0x80 # 10000000
  260. BRAILLE_LINK_BOTH = 0xc0 # 11000000
  261. brailleLinkIndicator = BRAILLE_LINK_BOTH
  262.  
  263. # Speech punctuation levels (see verbalizePunctuationStyle).
  264. #
  265. PUNCTUATION_STYLE_NONE = 3
  266. PUNCTUATION_STYLE_SOME = 2
  267. PUNCTUATION_STYLE_MOST = 1
  268. PUNCTUATION_STYLE_ALL  = 0
  269. verbalizePunctuationStyle = PUNCTUATION_STYLE_MOST
  270.  
  271. # Say All styles (see sayAllStyle).
  272. #
  273. SAYALL_STYLE_LINE     = 0
  274. SAYALL_STYLE_SENTENCE = 1
  275. sayAllStyle = SAYALL_STYLE_SENTENCE
  276.  
  277. # The absolue amount to change the speech rate when
  278. # increasing or decreasing speech.  This is a numerical
  279. # value that represents an ACSS rate value.
  280. #
  281. speechRateDelta         = 5
  282.  
  283. # The absolue amount to change the speech pitch when
  284. # increasing or decreasing pitch.  This is a numerical
  285. # value that represents an ACSS pitch value.
  286. #
  287. speechPitchDelta        = 0.5
  288.  
  289. # The port to listen on if orca is to act as an HTTP server
  290. # (mainly as a speech server for self-voicing applications).
  291. #
  292. httpServerPort          = 0
  293.  
  294. # The number of attempts to retry setting up an HTTP server
  295. # connection (each time incrementing the port number by 1).
  296. #
  297. maxHttpServerRetries    = 20
  298.  
  299. # Whether or not to use DBUS.
  300. #
  301. if os.getenv("DBUS_SESSION_BUS_ADDRESS"):
  302.     useDBus = True
  303. else:
  304.     useDBus = False
  305.  
  306. # Whether or not recording is enabled via the HTTP server. 
  307. #
  308. enableRemoteLogging     = False
  309.  
  310. # If True, enable speech.
  311. #
  312. enableSpeech            = True
  313. enableSpeechCallbacks   = True
  314.  
  315. # If True, speech has been temporarily silenced.
  316. #
  317. silenceSpeech           = False
  318.  
  319. # Settings that apply to the particular speech engine to
  320. # use as well details on the default voices to use.
  321. #
  322. speechFactoryModules    = ["espeechfactory", \
  323.                            "gnomespeechfactory", \
  324.                            "speechdispatcherfactory"]
  325. speechServerFactory     = "gnomespeechfactory"
  326. speechServerInfo        = None # None means let the factory decide.
  327.  
  328. DEFAULT_VOICE           = "default"
  329. UPPERCASE_VOICE         = "uppercase"
  330. HYPERLINK_VOICE         = "hyperlink"
  331.  
  332. voices = {
  333.     DEFAULT_VOICE   : ACSS({}),
  334.     UPPERCASE_VOICE : ACSS({ACSS.AVERAGE_PITCH : 5.6}),
  335.     HYPERLINK_VOICE : ACSS({})
  336. }
  337.  
  338. # If True, enable speaking of speech indentation and justification.
  339. #
  340. enableSpeechIndentation = False
  341.  
  342. # If True, enable braille.
  343. #
  344. enableBraille           = True
  345.  
  346. # If True, add the hierarchical context of an object to the braille
  347. # line.  People with very large braille displays may want to set this
  348. # to False.
  349. #
  350. enableBrailleContext    = True
  351.  
  352. # If True, enable the grouping of children on the braille display.
  353. # This is for things like displaying all items of a menu, tab list,
  354. # menu bar, etc., on a single line of the braille display.
  355. #
  356. enableBrailleGrouping   = False
  357.  
  358. # If True, enable braille monitor.
  359. #
  360. enableBrailleMonitor    = False
  361.  
  362. # string to indicate end of printed line for braille displays:
  363. #
  364. disableBrailleEOL = False
  365. brailleEOLIndicator = " $l"
  366.  
  367. # Strings used to indicate checkbox/radio button states in braille:
  368. #
  369. brailleCheckBoxIndicators = ["< >", "<x>", "<->"]
  370. brailleRadioButtonIndicators = ["& y", "&=y"]
  371.  
  372. # If True, enable magnification.
  373. #
  374. enableMagnifier                  = False
  375.  
  376. # If True, changes made in the Magnifier pane will take place
  377. # immediately (i.e. without pressing the apply button).  Making
  378. # them permanent still requires pressing Apply or OK.
  379. #
  380. enableMagLiveUpdating            = True
  381.  
  382. # If True, show the magnification cursor.
  383. #
  384. enableMagCursor                  = True
  385.  
  386. # If True, allow an explicit size for the magnification cursor.
  387. #
  388. enableMagCursorExplicitSize      = False
  389.  
  390. # If True, hide the system cursor.
  391. #
  392. magHideCursor                    = False
  393.  
  394. # Size of the magnification cursor (in pixels).
  395. #
  396. magCursorSize                    = 32
  397.  
  398. # Magnification cursor color value (hex color spec).
  399. #
  400. magCursorColor                   = '#000000'
  401.  
  402. # If True, show the magnification cross-hairs.
  403. #
  404. enableMagCrossHair               = True
  405.  
  406. # If True, enable magnification cross-hair clipping.
  407. #
  408. enableMagCrossHairClip           = False
  409.  
  410. # Size of the magnification cross-hairs (in pixels).
  411. #
  412. magCrossHairSize                 = 16
  413.  
  414. # Magnification cross-hair color value (hex color spec).
  415. #
  416. magCrossHairColor                   = '#000000'
  417.  
  418. # Magnification Zoomer type.
  419. #
  420. MAG_ZOOMER_TYPE_FULL_SCREEN      = 0
  421. MAG_ZOOMER_TYPE_TOP_HALF         = 1
  422. MAG_ZOOMER_TYPE_BOTTOM_HALF      = 2
  423. MAG_ZOOMER_TYPE_LEFT_HALF        = 3
  424. MAG_ZOOMER_TYPE_RIGHT_HALF       = 4
  425. MAG_ZOOMER_TYPE_CUSTOM           = 5
  426. magZoomerType                    = MAG_ZOOMER_TYPE_FULL_SCREEN
  427.  
  428. # Magnification zoomer region placement.
  429. #
  430. magZoomerLeft                    = screenWidth / 2
  431. magZoomerRight                   = screenWidth
  432. magZoomerTop                     = 0
  433. magZoomerBottom                  = screenHeight
  434.  
  435. # Magnification zoom factor.
  436. #
  437. magZoomFactor                    = 4.0
  438.  
  439. # If True, display a border around the magnification zoomer region.
  440. #
  441. enableMagZoomerBorder           = False
  442.  
  443. # The color and size of the border which separates the target
  444. # display from the source display.
  445. #
  446. magZoomerBorderSize              = 1
  447. magZoomerBorderColor             = '#000000'
  448.  
  449. # If True, invert the magnification zoomer colors.
  450. #
  451. enableMagZoomerColorInversion    = False
  452.  
  453. # The brightness levels.  The range is from -1 to 1, with 0
  454. # being "normal"/no change.
  455. #
  456. magBrightnessLevel               = 0
  457. magBrightnessLevelRed            = 0
  458. magBrightnessLevelGreen          = 0
  459. magBrightnessLevelBlue           = 0
  460.  
  461. # The contrast levels.  The range is from -1 to 1, with 0
  462. # being "normal"/no change.
  463. #
  464. magContrastLevel                 = 0
  465. magContrastLevelRed              = 0
  466. magContrastLevelGreen            = 0
  467. magContrastLevelBlue             = 0
  468.  
  469. # Magnification libcolorblind color filtering mode (see magColorFilteringMode).
  470. #
  471. MAG_COLOR_FILTERING_MODE_NONE                 = 0
  472. MAG_COLOR_FILTERING_MODE_SATURATE_RED         = 1
  473. MAG_COLOR_FILTERING_MODE_SATURATE_GREEN       = 2
  474. MAG_COLOR_FILTERING_MODE_SATURATE_BLUE        = 3
  475. MAG_COLOR_FILTERING_MODE_DESATURATE_RED       = 4
  476. MAG_COLOR_FILTERING_MODE_DESATURATE_GREEN     = 5
  477. MAG_COLOR_FILTERING_MODE_DESATURATE_BLUE      = 6
  478. MAG_COLOR_FILTERING_MODE_POSITIVE_HUE_SHIFT   = 7
  479. MAG_COLOR_FILTERING_MODE_NEGATIVE_HUE_SHIFT   = 8
  480. magColorFilteringMode = MAG_COLOR_FILTERING_MODE_NONE
  481.  
  482. # Magnification smoothing mode (see magSmoothingMode).
  483. #
  484. MAG_SMOOTHING_MODE_BILINEAR      = 0
  485. MAG_SMOOTHING_MODE_NONE          = 1
  486. magSmoothingMode                 = MAG_SMOOTHING_MODE_BILINEAR
  487.  
  488. # Magnification tracking mode styles (see magMouseTrackingMode,
  489. # magControlTrackingMode and magTextTrackingMode).
  490. #
  491. MAG_TRACKING_MODE_CENTERED     = 0
  492. MAG_TRACKING_MODE_PROPORTIONAL = 1
  493. MAG_TRACKING_MODE_PUSH         = 2
  494. MAG_TRACKING_MODE_NONE         = 3
  495.  
  496. # To retain backward compatibility with previous versions of Orca.
  497. #
  498. MAG_MOUSE_TRACKING_MODE_CENTERED = MAG_TRACKING_MODE_CENTERED
  499. MAG_MOUSE_TRACKING_MODE_PROPORTIONAL = MAG_TRACKING_MODE_PROPORTIONAL
  500. MAG_MOUSE_TRACKING_MODE_PUSH = MAG_TRACKING_MODE_PUSH
  501. MAG_MOUSE_TRACKING_MODE_NONE = MAG_TRACKING_MODE_NONE
  502.  
  503. # Magnification mouse tracking mode.
  504. #
  505. magMouseTrackingMode           = MAG_TRACKING_MODE_CENTERED
  506.  
  507. # Magnification control and menu item tracking mode.
  508. #
  509. magControlTrackingMode         = MAG_TRACKING_MODE_PUSH
  510.  
  511. # Magnification text cursor tracking mode.
  512. #
  513. magTextTrackingMode            = MAG_TRACKING_MODE_PUSH
  514.  
  515. # Magnification edge margin (percentage of screen).
  516. #
  517. magEdgeMargin                  = 0
  518.  
  519. # If enabled, automatically repositions the mouse pointer to the
  520. # menu item or control with focus.
  521. #
  522. magPointerFollowsFocus         = False
  523.  
  524. # If enabled, automatically repositions the mouse pointer into the
  525. # zoomer if it's not visible when initially moved.
  526. #
  527. magPointerFollowsZoomer        = True
  528.  
  529. # Magnification source display
  530. #
  531. magSourceDisplay                 = ''
  532.  
  533. # Magnification target display
  534. #
  535. magTargetDisplay                 = ''
  536.  
  537. # if True, enable word echo.
  538. # Note that it is allowable for both enableEchoByWord and enableKeyEcho
  539. # to be True
  540. #
  541. enableEchoByWord        = False
  542.  
  543. # if True, enable word echo.
  544. # Note that it is allowable for both enableEchoByWord and enableEchoBySentence
  545. # to be True.
  546. #
  547. enableEchoBySentence    = False
  548.  
  549. # If True, enable key echo.
  550. # Note that it is allowable for both enableEchoByWord and enableKeyEcho
  551. # to be True
  552. #
  553. enableKeyEcho           = True
  554.  
  555. # If True and key echo is enabled, echo Alphanumeric and punctuation keys.
  556. #
  557. enablePrintableKeys     = True
  558.  
  559. # If True and key echo is enabled, echo Modifier keys.
  560. #
  561. enableModifierKeys      = True
  562.  
  563. # If True and key echo is enabled, echo Locking keys.
  564. #
  565. enableLockingKeys       = True
  566.  
  567. # If True and key echo is enabled, echo Function keys.
  568. #
  569. enableFunctionKeys      = True
  570.  
  571. # If True and key echo is enabled, echo Action keys.
  572. #
  573. enableActionKeys        = True
  574.  
  575. # If True and key echo is enabled, echo Navigation keys.
  576. #
  577. enableNavigationKeys    = False
  578.  
  579. # If True, tutorial strings defined will be spoken.
  580. #
  581. enableTutorialMessages = False
  582.  
  583. # If True, mnemonics will be spoken.
  584. #
  585. enableMnemonicSpeaking = False
  586.  
  587. # If True, show the main Orca window.
  588. #
  589. showMainWindow          = True
  590.  
  591. # If True, quit Orca without confirmation when the user presses
  592. # <Orca-modifier>-q.
  593. #
  594. quitOrcaNoConfirmation  = False
  595.  
  596. # Whether the user wants tooltips presented or not.
  597. #
  598. presentToolTips = False and canPresentToolTips
  599.  
  600. # Keyboard layout options (see keyboardLayout).
  601. #
  602. GENERAL_KEYBOARD_LAYOUT_DESKTOP = 1
  603. GENERAL_KEYBOARD_LAYOUT_LAPTOP  = 2
  604. keyboardLayout                  = GENERAL_KEYBOARD_LAYOUT_DESKTOP
  605.  
  606. # The red, green, blue values to use to outline the current item in
  607. # flat review mode. They are values between 0 and 65535 (0xFFFF), with
  608. # 65535 (0xFFFF) indicating full intensitiy
  609. #
  610. outlineColor = [ 0xFFFF, 0x0000, 0x0000 ]
  611.  
  612. # Thickness in pixels of the outline around the the current item in flat 
  613. # review mode.
  614. #
  615. outlineThickness = 4
  616.  
  617. # Margin between the object being outlined and the actual outline
  618. #
  619. outlineMargin = 1
  620.  
  621. # The kind of outlining to do for flat review mode.
  622. #
  623. OUTLINE_NONE = 0
  624. OUTLINE_BOX = 1
  625. OUTLINE_LINE = 2
  626. OUTLINE_WEDGES = 3
  627. outlineStyle = OUTLINE_BOX
  628.  
  629. # If True, speak blank lines.
  630. #
  631. speakBlankLines         = True
  632.  
  633. # if True, process multi case strings as words.
  634. #
  635. speakMultiCaseStringsAsWords = False
  636.  
  637. # If True, reads all the table cells in the current row rather than just
  638. # the current one.
  639. #
  640. readTableCellRow    = True
  641.  
  642. # If True, enable speaking of progress bar updates.
  643. #
  644. enableProgressBarUpdates = True
  645.  
  646. # The interval (in seconds) between speaking progress bar updates. A value
  647. # of zero means that progress bar updates should not be spoken at all.
  648. #
  649. progressBarUpdateInterval = 10
  650.  
  651. # Whether or not to present the 'read only' attribute of text areas
  652. # if we can detect they are read only or not.
  653. #
  654. presentReadOnlyText = True
  655.  
  656. # Translators: this is used to indicate the user is in a text
  657. # area that is not editable.  It is meant to be spoken to the user.
  658. #
  659. speechReadOnlyString = C_("text", "read only")
  660.  
  661. # Translators: this is used to indicate the user is in a text
  662. # area that is not editable.  It is meant to be a short abbreviation
  663. # to be presented on the braille display.
  664. #
  665. brailleReadOnlyString = C_("text", "rdonly")
  666.  
  667. # The complete list of possible text attributes.
  668. #
  669. allTextAttributes = \
  670.     "bg-color:; bg-full-height:; bg-stipple:; direction:; editable:; " \
  671.     "family-name:; fg-color:; fg-stipple:; font-effect:none; indent:0; " \
  672.     "invisible:; justification:left; language:; left-margin:; " \
  673.     "line-height:100%; paragraph-style:Default; pixels-above-lines:; " \
  674.     "pixels-below-lines:; pixels-inside-wrap:; right-margin:; rise:; " \
  675.     "scale:; size:; stretch:; strikethrough:false; style:normal; " \
  676.     "text-decoration:none; text-rotation:0; text-shadow:none; " \
  677.     "underline:none; variant:; vertical-align:baseline; weight:400; " \
  678.     "wrap-mode:; writing-mode:lr-tb;"
  679.  
  680. # The default set of text attributes to speak to the user. Specific
  681. # application scripts (or individual users can override these values if
  682. # so desired. Each of these text attributes is of the form <key>:<value>;
  683. # The <value> part will be the "default" value for that attribute. In
  684. # other words, if the attribute for a given piece of text has that value,
  685. # it won't be spoken. If no value part is given, then that attribute will
  686. # always be spoken.
  687.  
  688. enabledSpokenTextAttributes = \
  689.     "size:; family-name:; weight:400; indent:0; underline:none; " \
  690.     "strikethrough:false; justification:left; style:normal; " \
  691.     "paragraph-style:;"
  692.  
  693. # The default set of text attributes to be brailled for the user. Specific
  694. # application scripts (or individual users can override these values if
  695. # so desired. Each of these text attributes is of the form <key>:<value>;
  696. # The <value> part will be the "default" value for that attribute. In
  697. # other words, if the attribute for a given piece of text has that value,
  698. # it won't be spoken. If no value part is given, then that attribute will
  699. # always be brailled.
  700.  
  701. enabledBrailledTextAttributes = \
  702.     "size:; family-name:; weight:400; indent:0; underline:none; " \
  703.     "strikethrough:false; justification:left; style:normal;"
  704.  
  705. # Text Attributes Braille Indicator (see textAttributesBrailleIndicator).
  706. # The values represent the character to be used in the attrOr
  707. # field of brlAPI's writeStruct.
  708. #
  709. TEXT_ATTR_BRAILLE_NONE = 0x00 # 00000000
  710. TEXT_ATTR_BRAILLE_7    = 0x40 # 01000000
  711. TEXT_ATTR_BRAILLE_8    = 0x80 # 10000000
  712. TEXT_ATTR_BRAILLE_BOTH = 0xc0 # 11000000
  713. textAttributesBrailleIndicator = TEXT_ATTR_BRAILLE_NONE
  714.  
  715. # The limit to enable a repeat character count to be spoken.
  716. # If set to 0, then there will be no repeat character count.
  717. # Each character will be spoken singularly (i.e. "dash dash
  718. # dash dash dash" instead of "five dash characters").
  719. # If the value is set to 1, 2 or 3 then it's treated as if it was
  720. # zero. In other words, no repeat character count is given.
  721. #
  722. repeatCharacterLimit = 4
  723.  
  724. # Tags associated with ARIA landmarks.
  725. #
  726. ariaLandmarks = [
  727.     "application",
  728.     "article",
  729.     "banner",
  730.     "complementary",
  731.     "contentinfo",
  732.     "definition",
  733.     "directory",
  734.     "document",
  735.     "grid",
  736.     "log",
  737.     "main",
  738.     "menubar",
  739.     "navigation",
  740.     "note",
  741.     "region",
  742.     "search",
  743.     "secondary",
  744.     "seealso",
  745.     "status",
  746. ]
  747.  
  748. # Script developer feature.  If False, just the default script
  749. # will be used.  Helps determine difference between custom
  750. # scripts and the default script behavior.
  751. #
  752. enableCustomScripts     = True
  753.  
  754. # Latent support to allow the user to override/define keybindings
  755. # and braille bindings.  Unsupported and undocumented for now.
  756. # Use at your own risk.
  757. #
  758. keyBindingsMap          = {}
  759. brailleBindingsMap      = {}
  760.  
  761. # Script developer feature.  If False, no AT-SPI object values
  762. # will be cached locally.  Helps determine if there might be a
  763. # problem related to the cache being out of sync with the real
  764. # objects.
  765. #
  766. cacheValues             = True
  767. cacheDescriptions       = True
  768.  
  769. # Script developer feature.  If False, no AT-SPI objects
  770. # will be cached locally.  Helps determine if there might be a
  771. # problem related to the cache being out of sync with the real
  772. # objects.
  773. #
  774. cacheAccessibles        = True
  775.  
  776. # Assists with learn mode (what you enter when you press Insert+F1
  777. # and exit when you press escape.
  778. #
  779. learnModeEnabled        = False
  780.  
  781. # The location of the user's preferences. By default this is ~/.orca.
  782. # It can be overridden by the Orca -d command line option.
  783. #
  784. userPrefsDir = os.path.join(os.environ["HOME"], ".orca")
  785.  
  786. # Assists with dealing with CORBA COMM_FAILURES.  A failure doesn't
  787. # always mean an object disappeared - there just might be a network
  788. # glitch.  So, on COMM_FAILURES, we might retry a few times before
  789. # giving up on an object.  This might need to be overridden by the
  790. # script.
  791. #
  792. commFailureWaitTime = 0.1
  793. commFailureAttemptLimit = 5
  794.  
  795. # If non-zero, we use time.sleep() in various places to attempt to
  796. # free up the global interpreter lock.  Take a look at the following
  797. # URLs for more information:
  798. #
  799. # http://mail.python.org/pipermail/python-list/2002-October/126632.html
  800. # http://twistedmatrix.com/pipermail/twisted-python/2005-July/011052.html
  801. # http://www.pyzine.com/Issue001/Section_Articles/ \
  802. #                                 article_ThreadingGlobalInterpreter.html
  803. #
  804. gilSleepTime            = 0.00001
  805.  
  806. # If True, use the gidle __blockPreventor() code in atspi.py.
  807. #
  808. useBlockPreventor       = False
  809.  
  810. # If True, we use the bonobo main loop provided by bonobo to handle
  811. # all events in atspi.py.  If False, we create our own loop.
  812. #
  813. useBonoboMain           = True
  814.  
  815. # If True, we handle events asynchronously - our normal mode of
  816. # queueing events and processing them later on the gidle thread.
  817. # If False, we handle events immediately - helpful for testing.
  818. #
  819. asyncMode               = True
  820.  
  821. # A list of toolkits whose events we need to process synchronously.
  822. # The only one right now is the Java toolkit (see bug #531869), but
  823. # we put this here to allow more toolkits to be more easily added
  824. # and for Java to be removed if issues with asynchronous processing
  825. # of its events are ever resolved.
  826. #
  827. synchronousToolkits     = ["J2SE-access-bridge"]
  828.  
  829. # If True, we output debug information for the event queue.  We
  830. # use this in addition to log level to prevent debug logic from
  831. # bogging down event handling.
  832. #
  833. debugEventQueue         = False
  834.  
  835. # If True, we collect information regarding memory usage and provide
  836. # keystrokes to dump the usage information to the console:
  837. # Orca+Ctrl+F8 for brief, Orca+Shift+Ctrl+F8 for detailed.
  838. #
  839. debugMemoryUsage        = False
  840.  
  841. # The timeout value (in seconds) and callback used to determine if
  842. # Orca has hung or not.  The only setting one should muck with here is
  843. # the timeoutTime unless you want to create a custom callback handler
  844. # for the timeout.  See braille.py, atspi.py, and orca.py:init for how
  845. # these are used.
  846. #
  847. timeoutTime             = 10   # a value of 0 means don't do hang checking
  848. timeoutCallback         = None # Set by orca.py:init to orca.timeout
  849.  
  850. # Keyboard double-click period. If the same key is pressed within
  851. # this time period, it's considered to be a double-click and might
  852. # provide different functionality (for example, Numpad 5 double-click
  853. # spells the current word rather than speaks it).
  854. #
  855. doubleClickTimeout = 0.5
  856.  
  857. # Obtain/set information regarding whether accessibility is enabled
  858. # or not.
  859. #
  860. def isAccessibilityEnabled():
  861.     try:
  862.         return gconfClient.get_bool("/desktop/gnome/interface/accessibility")
  863.     except:
  864.         return False
  865.  
  866. def setAccessibilityEnabled(enable):
  867.     try:
  868.         return gconfClient.set_bool("/desktop/gnome/interface/accessibility",
  869.                                     enable)
  870.     except:
  871.         return False
  872.  
  873. # Obtain/set information regarding whether Orca is autostarted for this 
  874. # user at login time.
  875. #
  876. def isOrcaAutostarted():
  877.     """Return an indication of whether Orca autostart at login time is enabled.
  878.     """
  879.     prefix = "/desktop/gnome/applications/at/visual/"
  880.     try:
  881.         return ("orca" in gconfClient.get_string(prefix + "exec")) \
  882.            and gconfClient.get_bool(prefix + "startup")
  883.     except:
  884.         return False
  885.  
  886. def setOrcaAutostart(enable):
  887.     """Enable or disable the autostart of Orca at login time.
  888.  
  889.     Arguments:
  890.     - enable: if True, whether Orca autostart at login time is enabled.
  891.  
  892.     Returns an indication of whether the operation was successful.
  893.     """
  894.     prefix = "/desktop/gnome/applications/at/visual/"
  895.     try:
  896.         return gconfClient.set_string(prefix + "exec", "orca") \
  897.            and gconfClient.set_bool(prefix + "startup", enable)
  898.     except:
  899.         return False
  900.  
  901. # Obtain/set information regarding whether the gksu keyboard grab is enabled
  902. # or not.
  903. #
  904. def isGKSUGrabDisabled():
  905.     try:
  906.         return gconfClient.get_bool("/apps/gksu/disable-grab")
  907.     except:
  908.         return False
  909.  
  910. def setGKSUGrabDisabled(disable):
  911.     try:
  912.         return gconfClient.set_bool("/apps/gksu/disable-grab",
  913.                                     disable)
  914.     except:
  915.         return False
  916.  
  917. # Allow for the customization of key bindings.
  918. #
  919. def overrideKeyBindings(script, keyBindings):
  920.     return keyBindings
  921.  
  922. # Allow for user customization of pronunciations.
  923. #
  924. def overridePronunciations(script, pronunciations):
  925.     return pronunciations
  926.  
  927. # Which packages to search, and the order in which to search,
  928. # for application settings.  These packages are expected to be on
  929. # the PYTHONPATH and/or subpackages of the "orca" package.
  930. # REMEMBER: to make something a package, the directory has to
  931. # have a __init__.py file in it.
  932. #
  933. settingsPackages          = ["app-settings"]
  934.  
  935. # Which packages to search, and the order in which to search,
  936. # for custom scripts.  These packages are expected to be on
  937. # the PYTHONPATH and/or subpackages of the "orca" package.
  938. # REMEMBER: to make something a package, the directory has to
  939. # have a __init__.py file in it.
  940. #
  941. scriptPackages          = ["orca-scripts", "scripts", 
  942.                            "scripts.apps", "scripts.toolkits"]
  943.  
  944. # A list that helps us map application names to script module
  945. # names.  The key is the name of an application, and the value is
  946. # the name of a script module.  There are some default values here,
  947. # but one may call the setScriptMapping method of this module to
  948. # extend or override any mappings.
  949. #
  950. _scriptMappings = []
  951.  
  952. def setScriptMapping(regExpression, moduleName):
  953.     """Tells this module what script module to look for a given
  954.     application name.  The mappings are stored as a list and each
  955.     new mapping is added to the beginning of the list, meaning it
  956.     takes precedence over all other mappings.
  957.  
  958.     Arguments:
  959.     - regExpression: a regular expression used to match against an
  960.                      application name
  961.     - moduleName:    the name of the Python module containing the script
  962.                      class definition for the application
  963.     """
  964.  
  965.     _scriptMappings.insert(0, [regExpression, moduleName])
  966.  
  967. def getScriptModuleName(app):
  968.     """Returns the module name of the script to use for a given
  969.     application.  Any script mapping set via the setScriptMapping
  970.     method is searched first, with the ultimate fallback being the
  971.     name of the application itself.
  972.  
  973.     Arguments:
  974.     - app: the application to find a script module name for
  975.     """
  976.  
  977.     if not app.name:
  978.         return None
  979.  
  980.     for mapping in _scriptMappings:
  981.         regExpression = mapping[0]
  982.         moduleName = mapping[1]
  983.         if regExpression.match(app.name):
  984.             debug.println(
  985.                 debug.LEVEL_FINEST,
  986.                 "Script mapping for %s is %s" % (app.name, moduleName))
  987.             return moduleName
  988.  
  989.     return app.name
  990.  
  991. # Translators: the regular expression here represents a string to
  992. # match in the localized application name as seen by at-poke.  For
  993. # most cases, the application name is the name of the binary used to
  994. # start the application, but this is an unreliable assumption.  The
  995. # only reliable way to do the translation is by running the
  996. # application and then viewing its name in the main window of at-poke.
  997. # I wish the AT-SPI spec'd this out as machine readable (unlocalized)
  998. # names, but it's what we're stuck with (unfortunately).
  999. #
  1000. setScriptMapping(re.compile(_('[\S\s]*StarOffice[\s\S]*')), "soffice")
  1001.  
  1002. # Translators: see the regular expression note above.  This is for
  1003. # OpenOffice and StarOffice.
  1004. #
  1005. setScriptMapping(re.compile(_('soffice.bin')), "soffice")
  1006.  
  1007. # Translators: see the regular expression note above.  This is for
  1008. # OpenOffice and StarOffice.
  1009. #
  1010. setScriptMapping(re.compile(_('soffice')), "soffice")
  1011.  
  1012. # Translators: see the regular expression note above.  This is for the
  1013. # Evolution mail application.
  1014. #
  1015. setScriptMapping(re.compile(_('[Ee]volution')), "evolution")
  1016.  
  1017. # Translators: see the regular expression note above.  This is for a
  1018. # version of Mozilla Firefox, which chooses to create strange names
  1019. # for itself at the drop of a hat.
  1020. #
  1021. setScriptMapping(re.compile(_('Deer Park')), "Mozilla")
  1022.  
  1023. # Translators: see the regular expression note above.  This is for a
  1024. # version of Mozilla Firefox, which chooses to create strange names
  1025. # for itself at the drop of a hat.
  1026. #
  1027. setScriptMapping(re.compile(_('Bon Echo')), "Mozilla")
  1028.  
  1029. # Translators: see the regular expression note above.  This is for a
  1030. # version of Mozilla Firefox, which chooses to create strange names
  1031. # for itself at the drop of a hat.
  1032. #
  1033. setScriptMapping(re.compile(_('Minefield')), "Mozilla")
  1034.  
  1035. # Translators: see the regular expression note above.  This is for a
  1036. # version of Mozilla Firefox, which chooses to create strange names
  1037. # for itself at the drop of a hat. [[[TODO - JD: Not marked for
  1038. # translation due to string freeze. I'm not convinced it needs to
  1039. # be translated either.]]]
  1040. #
  1041. #setScriptMapping(re.compile(_('Shiretoko')), "Mozilla")
  1042. setScriptMapping(re.compile('Shiretoko'), "Mozilla")
  1043.  
  1044. # This is a temporary fix for the schema/FF 3.0 not being accessible
  1045. # issue. (See GNOME bugs #535827 and #555466.)
  1046. #
  1047. setScriptMapping(re.compile('[Ff]irefox'), "Mozilla")
  1048.  
  1049. # Translators: see the regular expression note above.  This is for a
  1050. # version of Thunderbird, which chooses to now call itself by a different
  1051. # name.
  1052. #
  1053. setScriptMapping(re.compile(_('Shredder')), "Thunderbird")
  1054.  
  1055. # Translators: see the regular expression note above.  This is for
  1056. # the Thunderbird e-mail application.
  1057. #
  1058. setScriptMapping(re.compile(_('Mail/News')), "Thunderbird")
  1059.  
  1060. # Translators: see the regular expression note above.  This is for
  1061. # gnome_segv2, which calls itself bug-buddy in at-poke.
  1062. #
  1063. setScriptMapping(re.compile(_('bug-buddy')), "gnome_segv2")
  1064.  
  1065. # Translators: see the regular expression note above.  This is for
  1066. # the underlying terminal support in gnome-terminal.
  1067. #
  1068. setScriptMapping(re.compile(_('vte')), "gnome-terminal")
  1069.  
  1070. # Translators: see the regular expression note above.  This is for
  1071. # supporting gaim, which has recently be renamed to pidgin.
  1072. #
  1073. setScriptMapping(re.compile(_('gaim')), "pidgin")
  1074.  
  1075. # Translators: see the regular expression note above.  This is for
  1076. # supporting yelp, which sometimes identifies itself as gnome-help.
  1077. # [[[TODO - JD: Not marked for translation due to string freeze,
  1078. # plus gnome-help doesn't translate its app name as far as we can
  1079. # determine.  So, translating this string really seems like extra
  1080. # busy work for our translators.]]]
  1081. #
  1082. #setScriptMapping(re.compile(_('gnome-help')), "yelp")
  1083. setScriptMapping(re.compile('gnome-help'), "yelp")
  1084.  
  1085. # Show deprecated messeges in debug output.
  1086. # Set this to True to help find potential pyatspi porting problems
  1087. #
  1088. deprecatedMessages = False
  1089.  
  1090. # Focus history length. We keep a reference to past focused accessibles to 
  1091. # maximize on caching.
  1092. #
  1093. focusHistoryLength = 5
  1094.  
  1095. # Listen to all AT-SPI events, regardless to if we are using them or not.
  1096. # This is useful for development and debugging.
  1097. #
  1098. listenAllEvents = False
  1099.  
  1100. # This is a list of events that Orca should immidiately drop and never look at.
  1101. #
  1102. ignoredEventsList = ['object:bounds-changed']
  1103.  
  1104. # Listen to Live Region events.  Tells Gecko.onChildrenChanged() and 
  1105. # onTextInserted() event handlers to monitor these events for live region
  1106. # changes.  
  1107. #
  1108. inferLiveRegions = True
  1109.  
  1110. # Contracted braille support.
  1111. enableContractedBraille = False
  1112.  
  1113. # Contracted braille table.
  1114. brailleContractionTable = ''
  1115.  
  1116. # Use Collection Interface?
  1117. useCollection = True
  1118.  
  1119. # Whether or not to speak the cell's coordinates when navigating
  1120. # from cell to cell in a table.
  1121. #
  1122. speakCellCoordinates = True
  1123.  
  1124. # Whether or not to speak the number of cells spanned by a cell
  1125. # that occupies more than one row or column of a table.
  1126. #
  1127. speakCellSpan = True
  1128.  
  1129. # Whether or not to announce the header that applies to the current
  1130. # when navigating from cell to cell in a table.
  1131. #
  1132. speakCellHeaders = True
  1133.  
  1134. # Whether blank cells should be skipped when navigating in a table
  1135. # using table navigation commands.
  1136. #
  1137. skipBlankCells = False
  1138.  
  1139. # The minimum size in characters to be considered a "large object"
  1140. # or "chunk" for structural navigation.
  1141. #
  1142. largeObjectTextLength = 75
  1143.  
  1144. # Whether to wrap around the document when structural navigation is used.
  1145. wrappedStructuralNavigation = True
  1146.  
  1147. # Report object under mouse.
  1148. #
  1149. enableMouseReview = False
  1150.  
  1151. # Mouse dwell delay in milliseconds for mouse review mode. 
  1152. # If the value is zero, the review will be read time.
  1153. #
  1154. mouseDwellDelay = 0
  1155.  
  1156. # Maximum allowed drift while pointer is dwelling in mouse review mode.
  1157. mouseDwellMaxDrift = 3
  1158.  
  1159. # The different modifiers/modifier masks associated with keybindings
  1160. #
  1161. NO_MODIFIER_MASK              =  0
  1162. ALT_MODIFIER_MASK             =  1 << pyatspi.MODIFIER_ALT
  1163. CTRL_MODIFIER_MASK            =  1 << pyatspi.MODIFIER_CONTROL
  1164. ORCA_MODIFIER_MASK            =  1 << MODIFIER_ORCA
  1165. ORCA_ALT_MODIFIER_MASK        = (1 << MODIFIER_ORCA |
  1166.                                  1 << pyatspi.MODIFIER_ALT)
  1167. ORCA_CTRL_MODIFIER_MASK       = (1 << MODIFIER_ORCA |
  1168.                                  1 << pyatspi.MODIFIER_CONTROL)
  1169. ORCA_CTRL_ALT_MODIFIER_MASK   = (1 << MODIFIER_ORCA |
  1170.                                  1 << pyatspi.MODIFIER_CONTROL |
  1171.                                  1 << pyatspi.MODIFIER_ALT)
  1172. ORCA_SHIFT_MODIFIER_MASK      = (1 << MODIFIER_ORCA |
  1173.                                  1 << pyatspi.MODIFIER_SHIFT)
  1174. SHIFT_MODIFIER_MASK           =  1 << pyatspi.MODIFIER_SHIFT
  1175. SHIFT_ALT_MODIFIER_MASK       = (1 << pyatspi.MODIFIER_SHIFT |
  1176.                                  1 << pyatspi.MODIFIER_ALT)
  1177. COMMAND_MODIFIER_MASK         = (1 << pyatspi.MODIFIER_ALT |
  1178.                                  1 << pyatspi.MODIFIER_CONTROL |
  1179.                                  1 << pyatspi.MODIFIER_META2 |
  1180.                                  1 << pyatspi.MODIFIER_META3)
  1181. NON_LOCKING_MODIFIER_MASK     = (1 << pyatspi.MODIFIER_SHIFT |
  1182.                                  1 << pyatspi.MODIFIER_ALT |
  1183.                                  1 << pyatspi.MODIFIER_CONTROL |
  1184.                                  1 << pyatspi.MODIFIER_META2 |
  1185.                                  1 << pyatspi.MODIFIER_META3 |
  1186.                                  1 << MODIFIER_ORCA)
  1187. ALL_BUT_NUMLOCK_MODIFIER_MASK = (1 << MODIFIER_ORCA |
  1188.                                  1 << pyatspi.MODIFIER_SHIFT |
  1189.                                  1 << pyatspi.MODIFIER_SHIFTLOCK |
  1190.                                  1 << pyatspi.MODIFIER_CONTROL |
  1191.                                  1 << pyatspi.MODIFIER_ALT |
  1192.                                  1 << pyatspi.MODIFIER_META2 |
  1193.                                  1 << pyatspi.MODIFIER_META3)
  1194.  
  1195. # The 2nd parameter used when creating a keybinding refers to the
  1196. # modifiers "we care about."  We typically care about all of the
  1197. # modifiers which are not locking keys because we want to avoid
  1198. # conflicts with other commands, such as Orca's command for moving
  1199. # among headings (H) and the Help menu (Alt+H).
  1200. #
  1201. defaultModifierMask = NON_LOCKING_MODIFIER_MASK
  1202.  
  1203. # Whether or not we should present objects with STATE_REQUIRED to
  1204. # the user. Currently, this is only seen with ARIA widgets.
  1205. #
  1206. presentRequiredState = False
  1207.  
  1208. # Translators: Certain objects (such as form controls on web pages)
  1209. # can have STATE_REQUIRED set on them to inform the user that this
  1210. # field must be filled out. This string is the default string which
  1211. # will be spoken and displayed in braille to indicate this state is
  1212. # present.
  1213. #
  1214. brailleRequiredStateString = _("required")
  1215.  
  1216. # Translators: Certain objects (such as form controls on web pages)
  1217. # can have STATE_REQUIRED set on them to inform the user that this
  1218. # field must be filled out. This string is the default string which
  1219. # will be spoken and displayed in braille to indicate this state is
  1220. # present.
  1221. #
  1222. speechRequiredStateString = _("required")
  1223.